//
//  NSString+MD5.h
//  ZuoGongJiao
//
//  Created by lantaiyuan on 2017/7/1.
//  Copyright © 2017年 lantaiyuan. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSString (MD5)

+ (NSString *)stringToMD5:(NSString *)str;

+(NSString*) sha1:(NSString *)str;

/*
 高级加密标准（英语：Advanced Encryption Standard，缩写：AES），AES是一个对称分组密码算法，根据使用的密码长度，AES最常见的有3种方案，分别是AES-128、AES-192和AES-256。
 AES加密数据块分组长度必须为128比特，密钥长度可以是128比特、192比特、256比特中的任意一个（如果数据块及密钥长度不足时，会补齐）。AES加密有很多轮的重复和变换。
 大致步骤如下：1、密钥扩展（KeyExpansion），2、初始轮（Initial Round），3、重复轮（Rounds），每一轮又包括：SubBytes、ShiftRows、MixColumns、AddRoundKey，4、最终轮（Final Round），最终轮没有MixColumns。
 */
/**
 *  对data加密
 *
 *  @param data 需要加密的数据
 *
 *  @return 加密后的数据
 */
+(NSData *)aes256EncryptWithData:(NSData *)data;
/**
 *  对data解密
 *
 *  @param data 需要解密的数据
 *
 *  @return 解密后的数据
 */
+(NSData *)aes256DecryptWithData:(NSData *)data;
/**
 *  对字符串加密
 *
 *  @param string 需要加密的字符串
 *
 *  @return 加密后的数据
 */
+(NSData*)aes256EncryptWithString:(NSString*)string;
/**
 *  解密
 *
 *  @param data 需要解密的数据
 *
 *  @return 解密后的字符串
 */
+(NSString*)aes256DecryptStringWithData:(NSData *)data;
@end

@interface NSData (Base64)

/**
 数据流加密
 
 @param data 需要加密的数据流
 @return 加密后字符串
 */
+(NSString *)base64EncodedWithData:(NSData *)data;

/**
 字符串解密
 
 @param base64EncodedString 需要解密的字符串
 @return 解密后数据流
 */
+(NSData *)base64DecryptWithString:(NSString *)base64EncodedString;

/**
 字符串加密
 
 @param str 需要加密字符串
 @return 加密后字符串
 */
+(NSString *)base64EncodedWithString:(NSString *)str;

/**
 对字符串解密
 
 @param base64EncodedString 需要解密的字符串
 @return 解密后字符串
 */
+(NSString *)base64DecryptString:(NSString *)base64EncodedString;
@end
